package com.financing.platform.dto;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;

import com.financing.platform.common.CommonConstantUtil;
import com.financing.platform.vo.ProductProfitAndRebateVO;


/**
 * 
 * @author lisu
 *	wap_0.9 版本
 *		新增 P_INVEST_OWNER_ID 发行机构ID
 *	  	author lisu
 * 	wap_jee_1.3 
 * 		annualRevenueExpect 预期收益Double 改成文本框 String 
 * 	 	author lisu
 */
public class ProductDetailPageDTO extends BaseDTO {
	
	private static final long serialVersionUID = -3494853435857228544L;

	private Integer productId; //产品ID
	
	private String productCode="";
	private String productShortName="";
	private String productType=""; //产品类型 01:私募基金、02:信托、03：资管、04：有限合伙
	private String saleStatus="";

	private BigDecimal minimumAmount; //起购金额 
	//wap_jee_1.3 预期收益Double 改成文本框 String lisu
	private String annualRevenueExpect; //预期年华收益率  fp_project_annual_revenue
	private Double minRebate;  //返佣， 可能是费率和金额    fp_project_rabate
	private Boolean rebateIsRatio; //是否百分比
	
	private BigDecimal issuingScale;  //发行规模
	private BigDecimal allIssuingScale; //发行总规模
	private Integer dueTime;
	private String investType=""; //P_INVEST_TYPE  投资方向  01:房地产类  02:金融市场 03:基础建设04:其他05城投债06工商企业
	private String investOwner=""; //P_INVEST_OWNER   //发行机构
	private Integer investOwnerId; //P_INVEST_OWNER_ID   //发行机构ID
	private String videoOtherId; //产品视频第三方ID
	private String videoUrl; //产品视频地址
	private String videoContent;//产品视频内容简介
	
	/**
	 * 产品公司-信息
	 */
	private String cShortImageUri;
	@DateTimeFormat(pattern="yyyy-MM-dd")
	private Date saleDateStart;// P_SALE_TIME_START //正式销售日期 
	@DateTimeFormat(pattern="yyyy-MM-dd")
	private Date saleDateEnd;// P_SALE_TIME_START //正式销售日期 
	private BigDecimal expectSaleAmount; //P_EXPECT_SUBSCRIPTION_AMOUNT 预期销售金额 
	
	private double appointmenRatio; //预约进度
	private double signingRatio; //募集进度
	
	private Long appointmentNumber;  //预约笔数
	private BigDecimal appointmentAmount;  //预约金额
	private Long signingNum;  //签约笔数
	private BigDecimal signingAmount;  //签约金额
	
	private boolean appointment = true; //是否可以预约
	
	private String pProfitType="";//收益类型：01固定，02浮动
	private String pMiniSummary="";//一句话概述
	/**
	 * 发行地域
	 */
	private String publicArea="";
	/**
	 * 产品总购买数
	 */
	private int allSubscriptionNum;
	/**
	 * 产品总销售额度
	 */
	private BigDecimal allSubscriptionAmount;
	/**
	 * 产品等级AAA,AA,A
	 */
	private String pLevel="";
	
	private List<ProductProfitAndRebateVO> profitAndRebateList;  //收益返利
	
	/**
	 * 预期收益(最低)
	 */
	private ProductAnnualRevenueDTO profit;
	
	/**
	 * 预期收益(最高)
	 */
	private ProductAnnualRevenueDTO profitHight;
	
	private ActivitesMollionsWealthDTO activitiesMollionsWealth;
	
	private List<ActivitesMollionsWealthDTO> activitiesMollionsWealthList;
	
	private String instructionsWork; //起息说明
	private String paymentInterestType; //付息方式
	private String summary; //项目描述
	
	private String riskRank;
	private String riskRankComtent;
	
	private String projectOwner; //项目所属
	
	private Date establishmentTime; //产品成立时间 
	
	private int corpId;
	
	private String corpType;
	
	/**
	 * 追加最低累进额度
	 */
	private BigDecimal pProgressiveAmount;
	
	/**
	 * 募集进度
	 */
	private String pRecruitmentSummary;
	
	/**
	 * 担保方介绍 P_ABOUT_GUARANTOR 
	 */
	private String pAbountGuarantor;
	
	/**
	 * 融资方介绍 P_ABOUT_FINANCING_PARTY

	 */
	private String pAbountFinancingParty;
	
	/**
	 * 产品状态
	 */
	private String pPublicStatus;
	
	/**
	 * 产品图片地址
	 */
	private String pImageUrl;
	/**
	 * 机构基金公司描述
	 */
	private String peCompanyDescription;
	/**
	 * 管理机构
	 */
	private String peManageOrg;
	/**
	 * 组织形式
	 */
	private String peOrganizeShape;
	/**
	 * 基金形式
	 */
	private String peFundShape;
	/**
	 * 认购费
	 */
	private BigDecimal peSubscriptionFee;
	/**
	 * 管理费
	 */
	private BigDecimal peManagementExpense;
	/**
	 * 收益分成
	 */
	private String peRevenueSharing;
	/**
	 * 公司logo
	 */
	private String peLogoUri;
	
	/**
	 * 收藏状态
	 */
	private Integer likeType;
	
	/**
	 * 推荐首页LOGO
	 */
	private String peHomeLogoUri;
	

//	P_IMAGE_URI pImageUrl;
	
	/**
	 * 附件列表
	 */
	List<ProductAttachmentDTO> productAttachments;
    //累进最低额度P_PROGRESSIVE_AMOUNT
	//信托类型  
	//收益分配   P_PAYMENT_INTEREST_TYPE
	//投资行业 P_INVEST_TYPE
	//发现规模 P_ISSUING_SCALE
	//发现机构 P_INVEST_OWNER
	//发行地区 
	//起息日期
	//到期时间
	//起购金额  P_MINIMUM_AMOUNT
	//项目描述  P_SUMMARY
	//机构介绍
	//风险评估
	
	
	
	/**
	 * 大小配比类型(01:小额畅打,02:已配出小额,03:严格配比,04:全大额)
	 */
	private String pSizeRatioType;
	
	public Integer getLikeType() {
		return likeType;
	}
	public void setLikeType(Integer likeType) {
		this.likeType = likeType;
	}
	public String getPeLogoUri() {
		return peLogoUri;
	}
	public void setPeLogoUri(String peLogoUri) {
		this.peLogoUri = peLogoUri;
	}
	/**
	 * 大小配比说明
	 */
	private String pSizeRatioExplain;
	/**
	 * 是否深度分析  0:未有深度分析  非0:有深度分析
	 */
	private String isDeepAnalytics;
	
	
	
	public String getPeCompanyDescription() {
		return peCompanyDescription;
	}
	public void setPeCompanyDescription(String peCompanyDescription) {
		this.peCompanyDescription = peCompanyDescription;
	}
	public String getPeManageOrg() {
		return peManageOrg;
	}
	public void setPeManageOrg(String peManageOrg) {
		this.peManageOrg = peManageOrg;
	}
	public String getPeOrganizeShape() {
		return peOrganizeShape;
	}
	public void setPeOrganizeShape(String peOrganizeShape) {
		this.peOrganizeShape = peOrganizeShape;
	}
	public String getPeFundShape() {
		return peFundShape;
	}
	public void setPeFundShape(String peFundShape) {
		this.peFundShape = peFundShape;
	}
	public BigDecimal getPeSubscriptionFee() {
		return peSubscriptionFee;
	}
	public void setPeSubscriptionFee(BigDecimal peSubscriptionFee) {
		this.peSubscriptionFee = peSubscriptionFee;
	}
	public BigDecimal getPeManagementExpense() {
		return peManagementExpense;
	}
	public void setPeManagementExpense(BigDecimal peManagementExpense) {
		this.peManagementExpense = peManagementExpense;
	}
	public String getPeRevenueSharing() {
		return peRevenueSharing;
	}
	public void setPeRevenueSharing(String peRevenueSharing) {
		this.peRevenueSharing = peRevenueSharing;
	}
	
	public BigDecimal getpProgressiveAmount() {
		return pProgressiveAmount;
	}
	public String getpImageUrl() {
		return pImageUrl;
	}
	public void setpImageUrl(String pImageUrl) {
		this.pImageUrl = pImageUrl;
	}
	public String getpAbountGuarantor() {
		return pAbountGuarantor;
	}
	public void setpAbountGuarantor(String pAbountGuarantor) {
		this.pAbountGuarantor = pAbountGuarantor;
	}
	public String getpAbountFinancingParty() {
		return pAbountFinancingParty;
	}
	public void setpAbountFinancingParty(String pAbountFinancingParty) {
		this.pAbountFinancingParty = pAbountFinancingParty;
	}
	public List<ProductAttachmentDTO> getProductAttachments() {
		return productAttachments;
	}
	public void setProductAttachments(List<ProductAttachmentDTO> productAttachments) {
		this.productAttachments = productAttachments;
	}
	public String getpRecruitmentSummary() {
		return pRecruitmentSummary;
	}
	public void setpRecruitmentSummary(String pRecruitmentSummary) {
		this.pRecruitmentSummary = pRecruitmentSummary;
	}
	public String getPublicArea() {
		return publicArea;
	}
	public void setPublicArea(String publicArea) {
		this.publicArea = publicArea;
	}
	public int getAllSubscriptionNum() {
		return allSubscriptionNum;
	}
	public void setAllSubscriptionNum(int allSubscriptionNum) {
		this.allSubscriptionNum = allSubscriptionNum;
	}
	
	public BigDecimal getAllSubscriptionAmount() {
		return allSubscriptionAmount;
	}
	public void setAllSubscriptionAmount(BigDecimal allSubscriptionAmount) {
		this.allSubscriptionAmount = allSubscriptionAmount;
	}
	public ProductAnnualRevenueDTO getProfitHight() {
		return profitHight;
	}
	public void setProfitHight(ProductAnnualRevenueDTO profitHight) {
		this.profitHight = profitHight;
	}
	public String getpProfitType() {
		return pProfitType;
	}
	public void setpProfitType(String pProfitType) {
		this.pProfitType = pProfitType;
	}
	public String getpMiniSummary() {
		return pMiniSummary;
	}
	public void setpMiniSummary(String pMiniSummary) {
		this.pMiniSummary = pMiniSummary;
	}
	public void setpProgressiveAmount(BigDecimal pProgressiveAmount) {
		this.pProgressiveAmount = pProgressiveAmount;
	}
	private String productName;

	public String getpLevel() {
		return pLevel;
	}
	public void setpLevel(String pLevel) {
		this.pLevel = pLevel;
	}
	
	public ProductAnnualRevenueDTO getProfit() {
		return profit;
	}
	public void setProfit(ProductAnnualRevenueDTO profit) {
		this.profit = profit;
	}
	public String getProductShortName() {
		return productShortName;
	}
	public void setProductShortName(String productShortName) {
		this.productShortName = productShortName;
	}
	
	public BigDecimal getMinimumAmount() {
		return minimumAmount;
	}
	public void setMinimumAmount(BigDecimal minimumAmount) {
		this.minimumAmount = minimumAmount;
	}
	public String getAnnualRevenueExpect() {
		return annualRevenueExpect;
	}
	public void setAnnualRevenueExpect(String annualRevenueExpect) {
		this.annualRevenueExpect = annualRevenueExpect;
	}
	public BigDecimal getIssuingScale() {
		return issuingScale;
	}
	public void setIssuingScale(BigDecimal issuingScale) {
		this.issuingScale = issuingScale;
	}
	public Integer getDueTime() {
		return dueTime;
	}
	public void setDueTime(Integer dueTime) {
		this.dueTime = dueTime;
	}
	public String getInvestType() {
		return investType;
	}
	public void setInvestType(String investType) {
		this.investType = investType;
	}
	public String getInvestOwner() {
		return investOwner;
	}
	public void setInvestOwner(String investOwner) {
		this.investOwner = investOwner;
	}


	public String getProductName() {
		return productName;
	}
	public void setProductName(String productName) {
		this.productName = productName;
	}
	public Integer getProductId() {
		return productId;
	}
	public void setProductId(Integer productId) {
		this.productId = productId;
	}
	public Double getMinRebate() {
		return minRebate;
	}
	public void setMinRebate(Double minRebate) {
		this.minRebate = minRebate;
	}
	public Boolean getRebateIsRatio() {
		return rebateIsRatio;
	}
	public void setRebateIsRatio(Boolean rebateIsRatio) {
		this.rebateIsRatio = rebateIsRatio;
	}
	public Date getSaleDateStart() {
		return saleDateStart;
	}
	public void setSaleDateStart(Date saleDateStart) {
		this.saleDateStart = saleDateStart;
	}
	public BigDecimal getExpectSaleAmount() {
		return expectSaleAmount;
	}
	public void setExpectSaleAmount(BigDecimal expectSaleAmount) {
		this.expectSaleAmount = expectSaleAmount;
	}
	public Double getAppointmenRatio() {
		return appointmenRatio;
	}
	public void setAppointmenRatio(Double appointmenRatio) {
		this.appointmenRatio = appointmenRatio;
	}
	
	/**
	 * 投资行业
	 * @return
	 */
	public String getInvestDesc(){
		return CommonConstantUtil.getInvestDesc(investType);
	}

	/**
	 * 产品类型
	 * @return
	 */
	public String getProductTypeDesc(){
		return CommonConstantUtil.getProductTypeDesc(productType);
	}
	
	/**
	 * 销售状态
	 * @return
	 */
	public String getProductStatusDesc(){
		return CommonConstantUtil.getProductSaleStatusDesc(saleStatus);
	}
	
	public String getPaymentInterestTypeDesc(){
		return CommonConstantUtil.getPaymentInterestTypeDesc(paymentInterestType);
	}

	public Date getSaleDateEnd() {
		return saleDateEnd;
	}


	public void setSaleDateEnd(Date saleDateEnd) {
		this.saleDateEnd = saleDateEnd;
	}


	public BigDecimal getAppointmentAmount() {
		return appointmentAmount;
	}


	public void setAppointmentAmount(BigDecimal appointmentAmount) {
		this.appointmentAmount = appointmentAmount;
	}


	

	public BigDecimal getSigningAmount() {
		return signingAmount;
	}


	public void setSigningAmount(BigDecimal signingAmount) {
		this.signingAmount = signingAmount;
	}



	public Double getSigningRatio() {
		return signingRatio;
	}


	public void setSigningRatio(Double signingRatio) {
		this.signingRatio = signingRatio;
	}

	public double getDangerRatio(){
		return appointmenRatio-signingRatio;
	}


	public List<ProductProfitAndRebateVO> getProfitAndRebateList() {
		return profitAndRebateList;
	}


	public void setProfitAndRebateList(
			List<ProductProfitAndRebateVO> profitAndRebateList) {
		this.profitAndRebateList = profitAndRebateList;
	}


	public String getProductCode() {
		return productCode;
	}


	public void setProductCode(String productCode) {
		this.productCode = productCode;
	}


	public String getProductType() {
		return productType;
	}


	public void setProductType(String productType) {
		this.productType = productType;
	}


	public String getSaleStatus() {
		return saleStatus;
	}


	public void setSaleStatus(String saleStatus) {
		this.saleStatus = saleStatus;
	}


	public String getInstructionsWork() {
		return instructionsWork;
	}


	public void setInstructionsWork(String instructionsWork) {
		this.instructionsWork = instructionsWork;
	}


	public String getPaymentInterestType() {
		return paymentInterestType;
	}


	public void setPaymentInterestType(String paymentInterestType) {
		this.paymentInterestType = paymentInterestType;
	}


	public String getSummary() {
		return summary;
	}


	public void setSummary(String summary) {
		this.summary = summary;
	}


	public String getRiskRank() {
		return riskRank;
	}


	public void setRiskRank(String riskRank) {
		this.riskRank = riskRank;
	}


	public String getRiskRankComtent() {
		return riskRankComtent;
	}


	public void setRiskRankComtent(String riskRankComtent) {
		this.riskRankComtent = riskRankComtent;
	}


	public void setAppointmenRatio(double appointmenRatio) {
		this.appointmenRatio = appointmenRatio;
	}


	public void setSigningRatio(double signingRatio) {
		this.signingRatio = signingRatio;
	}


	public String getProjectOwner() {
		return projectOwner;
	}


	public void setProjectOwner(String projectOwner) {
		this.projectOwner = projectOwner;
	}
	public Date getEstablishmentTime() {
		return establishmentTime;
	}
	public void setEstablishmentTime(Date establishmentTime) {
		this.establishmentTime = establishmentTime;
	}
	public boolean isAppointment() {
		return appointment;
	}
	public void setAppointment(boolean appointment) {
		this.appointment = appointment;
	}
	public int getCorpId() {
		return corpId;
	}
	public void setCorpId(int corpId) {
		this.corpId = corpId;
	}
	public String getCorpType() {
		return corpType;
	}
	public void setCorpType(String corpType) {
		this.corpType = corpType;
	}
	
	public Long getAppointmentNumber() {
		return appointmentNumber;
	}
	public void setAppointmentNumber(Long appointmentNumber) {
		this.appointmentNumber = appointmentNumber;
	}
	public Long getSigningNum() {
		return signingNum;
	}
	public void setSigningNum(Long signingNum) {
		this.signingNum = signingNum;
	}
	public String getpPublicStatus() {
		return pPublicStatus;
	}
	public void setpPublicStatus(String pPublicStatus) {
		this.pPublicStatus = pPublicStatus;
	}
	public Integer getInvestOwnerId() {
		return investOwnerId;
	}
	public void setInvestOwnerId(Integer investOwnerId) {
		this.investOwnerId = investOwnerId;
	}
	public ActivitesMollionsWealthDTO getActivitiesMollionsWealth() {
		return activitiesMollionsWealth;
	}
	public void setActivitiesMollionsWealth(
			ActivitesMollionsWealthDTO activitiesMollionsWealth) {
		this.activitiesMollionsWealth = activitiesMollionsWealth;
	}
	public String getpSizeRatioType() {
		return pSizeRatioType;
	}
	public void setpSizeRatioType(String pSizeRatioType) {
		this.pSizeRatioType = pSizeRatioType;
	}
	public String getpSizeRatioExplain() {
		return pSizeRatioExplain;
	}
	public void setpSizeRatioExplain(String pSizeRatioExplain) {
		this.pSizeRatioExplain = pSizeRatioExplain;
	}

	public String getcShortImageUri() {
		return cShortImageUri;
	}
	public void setcShortImageUri(String cShortImageUri) {
		this.cShortImageUri = cShortImageUri;
	}

	public List<ActivitesMollionsWealthDTO> getActivitiesMollionsWealthList() {
		return activitiesMollionsWealthList;
	}
	public void setActivitiesMollionsWealthList(
			List<ActivitesMollionsWealthDTO> activitiesMollionsWealthList) {
		this.activitiesMollionsWealthList = activitiesMollionsWealthList;
	}
	public String getIsDeepAnalytics() {
		return isDeepAnalytics;
	}
	public void setIsDeepAnalytics(String isDeepAnalytics) {
		this.isDeepAnalytics = isDeepAnalytics;
	}
	public BigDecimal getAllIssuingScale() {
		return allIssuingScale;
	}
	public void setAllIssuingScale(BigDecimal allIssuingScale) {
		this.allIssuingScale = allIssuingScale;
	}
	public String getPeHomeLogoUri() {
		return peHomeLogoUri;
	}
	public void setPeHomeLogoUri(String peHomeLogoUri) {
		this.peHomeLogoUri = peHomeLogoUri;
	}
	public String getVideoUrl() {
		return videoUrl;
	}
	public void setVideoUrl(String videoUrl) {
		this.videoUrl = videoUrl;
	}
	public String getVideoContent() {
		return videoContent;
	}
	public void setVideoContent(String videoContent) {
		this.videoContent = videoContent;
	}
	public String getVideoOtherId() {
		return videoOtherId;
	}
	public void setVideoOtherId(String videoOtherId) {
		this.videoOtherId = videoOtherId;
	}
	
}
